<cfcomponent name="MockObject" extends="com.revenea.root.Object"  hint="I am a Mock object that can be used to replace the Object CFC when testing other components.">
	
	<cffunction name="init" returnType="revenea.root.Object" access="public" output="false" hint="Initializes the object, thereby returning an instantiation of it populated with its default properties.&nbsp; While subclasses will inherit this method, they will use their own setDefaults method to populate their subclass properties.">
		<cfargument name="keyValue" type="any" required="true" hint="" />
		<cfargument name="qLoadData" type="query" required="true" hint="" />
		<cfreturn this />
	</cffunction>
	
	<cffunction name="load" returnType="boolean" access="public" output="false" hint="Populates the properties of the object with values from the database corresponding to this object's key ID.&nbsp; This method is likely only useful for subclasses.&nbsp; The key ID is optional, and if not provided the system will attempt to extract it from the object itself or look for a code property to use as loading criteria.">
		<cfargument name="keyValue" type="any" required="true" hint="" />
		<cfthrow type="MockObject.unimplementedMethod" message="Method load() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="save" returnType="boolean" access="public" output="false" hint="Records the object&iuml;&iquest;&frac12;s property values to the database alongside the key ID.&nbsp; This is a facade-type method that interfaces with the private add or edit methods as needed. Returns true upon success.">
		<cfargument name="oUser" type="revenea.account.data.User" required="true" hint="The authenticated user that all auditing data generation will be recording during manipulation operations of this object" />
		<cfthrow type="MockObject.unimplementedMethod" message="Method save() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="remove" returnType="boolean" access="public" output="false" hint="Deletes the object from the system.">
		<cfargument name="oUser" type="revenea.account.data.User" required="true" hint="The authenticated user that all auditing data generation will be recording during manipulation operations of this object" />
		<cfthrow type="MockObject.unimplementedMethod" message="Method remove() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="getDAO" returnType="revenea.account.DAO" access="public" output="false" hint="Using the DAOPath attribute/property, this method will retrieve an instantiation of the DAO for this data class to use.">
		<cfthrow type="MockObject.unimplementedMethod" message="Method getDAO() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="getEntityType" returnType="revenea.utility.data.EntityType" access="public" output="false" hint="Returns a loaded EntityType that the current object (this) represents.&nbsp; There is no set equivelent because all subclass objects should already have their static _entityTypeCode value set and can therefore retrieve the corresponding EntityType object via its getter, getEntityType().">
		<cfthrow type="MockObject.unimplementedMethod" message="Method getEntityType() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="getKeyValue" returnType="any" access="public" output="false" hint="Returns the value of what the object has been taught it the key value for itself.">
		<cfthrow type="MockObject.unimplementedMethod" message="Method getKeyValue() in component Object not implemented yet." />
	</cffunction>
	
	<cffunction name="dump" returnType="void" access="public" output="false" hint="Returns a structure containing all private non-function variables for this object.">
		<cfargument name="blnAbort" type="boolean" required="true" hint="When true, the method will halt processing via the CFABORT tag." />
		<cfthrow type="MockObject.unimplementedMethod" message="Method dump() in component Object not implemented yet." />
	</cffunction>
	
</cfcomponent>